package com.example.java_gobang.tests;

import com.example.java_gobang.common.BrowserName;
import com.example.java_gobang.common.Utils;
import lombok.SneakyThrows;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;

/**
 * @author hanzishuai
 * Blog :  https://blog.csdn.net/qrwitu142857
 * @date 2025/5/9 11:04
 * @Description
 */
public class LoginPage extends Utils {
    public static final String url = "http://101.201.246.67:58080/login.html";

    public LoginPage() {
        super(url);
    }

    public LoginPage(BrowserName browserName) {
        super(url, browserName);
    }

    /**
     * Created by hanzishuai on 2025/4/21
     *
     * @param
     * @return void
     * @Description 检查页面是否可以正常打开
     */
    @SneakyThrows
    public void checkLoginPageRight() {

        // 检查登录框是否加载成功
        driver.findElement(By.cssSelector("#username"));
        driver.findElement(By.cssSelector("#password"));

        // 截图
        screenShot("checkPageRight");
    }

    private void login(String username, String password) {
        // 将输入框清空
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();

        // 输入账号密码，并点击提交
        if (username != null) {
            driver.findElement(By.cssSelector("#username")).sendKeys(username);
        }
        if (password != null) {
            driver.findElement(By.cssSelector("#password")).sendKeys(password);
        }

        driver.findElement(By.cssSelector("#submit")).click();
    }


    @SneakyThrows
    public void loginFail() {
        // 不输入账号和密码，点击提交
        login(null, null);
        // 等待弹窗出现
        wait.until(ExpectedConditions.alertIsPresent());

        // 处理弹窗
        Alert alert = driver.switchTo().alert();
        String text = alert.getText();
        assert text.equals("登录失败！");

        // 点击确定
        alert.accept();

        // 截图
        screenShot("LoginFail");

        // 输入账号，不输入密码，点击提交
        login("awa", null);
        // 等待弹窗出现
        wait.until(ExpectedConditions.alertIsPresent());

        // 处理弹窗
        alert = driver.switchTo().alert();
        text = alert.getText();
        assert text.equals("登录失败！");

        // 点击确定
        alert.accept();

        // 截图
        screenShot("LoginFail");

        // 不输入账号，输入密码，点击提交
        login(null, "123");
        // 等待弹窗出现
        wait.until(ExpectedConditions.alertIsPresent());

        // 处理弹窗
        alert = driver.switchTo().alert();
        text = alert.getText();
        assert text.equals("登录失败！");

        // 点击确定
        alert.accept();

        // 截图
        screenShot("LoginFail");

        // 输入账号，输入错误的密码，点击提交
        login("awa", "12");
        // 等待弹窗出现
        wait.until(ExpectedConditions.alertIsPresent());

        // 处理弹窗
        alert = driver.switchTo().alert();
        text = alert.getText();
        assert text.equals("登录失败！");

        // 点击确定
        alert.accept();

        // 截图
        screenShot("LoginFail");
    }

    @SneakyThrows
    public void loginSuccess() {
        login("awa", "123456");
        // 等待弹窗出现
        wait.until(ExpectedConditions.alertIsPresent());

        // 处理弹窗
        Alert alert = driver.switchTo().alert();
        String text = alert.getText();
        assert text.equals("登录成功！");

        // 点击确定
        alert.accept();

        // 截图
        screenShot("LoginSuccess");
        // 如果登录成功会进入游戏大厅页面
        driver.findElement(By.cssSelector("#match-button"));
    }

}
